package com.bart.scala.ch11

/**
 * 变量类型 隐式转换
 */

//******************  分数类  *********************
class Fraction(val num: Int, val den: Int) {
  // 定义值的输出
  override def toString = num + "/" + den
  // 定义乘法操作
  def *(other: Fraction) = new Fraction(num * other.num, den * other.den)
}

//******************  分数类  *********************
class Fraction2(val num: Int, val den: Int) {
  // 定义值的输出
  override def toString =  den + "分之" + num
  // 定义乘法操作
  def *(other: Fraction) = new Fraction2(num * other.num, den * other.den)
}


object  MainApp  extends App {

  // 隐式转换函数
  implicit def int2Fraction(n: Int) = new Fraction(n, 1)

  //只有有一个隐式转换可能性，否则会产生歧义，编译器报错
//  implicit def int2Fraction2(n: Int) = new Fraction2(n, 1)

  // 一般情况下时会报错，加了隐式转换的话会自动调用函数 int2Fraction
  val res = 3 * new Fraction(4, 5)

  println(res) // 12/5

}